package com.nur.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.nur.dal.Conexion;
import com.nur.dto.Usuario;

public class UsuarioDao extends Dao<Usuario>{

	public UsuarioDao(Context context) {
		super(context);
	}

	@Override
	public void insertar() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a insertar no puede ser nulo");
		
		ContentValues params = new ContentValues();
		params.put("login", this.dto.getLogin());
		params.put("fecha_creado", this.dto.getFechaCreacion());

		long id = db.insert("usuario", null, params);
		this.dto.setIdUsuario((int)id);
		
	}

	@Override
	public void update() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a actualizar no puede ser nulo");
		
		ContentValues params = new ContentValues();
		params.put("login", super.dto.getLogin());
		params.put("fecha_creado", super.dto.getFechaCreacion());

		db.update("usuario", params,"idusuario=?", new String[]{ String.valueOf(this.dto.getIdUsuario()) });
	}

	@Override
	public void delete() throws Exception {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getWritableDatabase();
		
		if(dto == null)
			throw new Exception("El objeto a eliminar no puede ser nulo");
		
		db.delete("usuario", "idusuario=?", new String[]{ String.valueOf(super.dto.getIdUsuario()) });
		
	}

	@Override
	public Usuario select(int id) {
		Conexion conexion = Conexion.getInstance();
		SQLiteDatabase db = conexion.getReadableDatabase();
		
		Cursor cursor = db.rawQuery("SELECT idusuario, "
					+ "login, "
					+ "fecha_creado FROM usuario WHERE idusuario = ?", 
				new String[]{ String.valueOf(id) });
		
		if(!cursor.moveToFirst())
			return null;
		
		int idUsuario = cursor.getInt(0);
		String login = cursor.getString(1);
		String fechaCreacion = cursor.getString(2);
		
		Usuario objUsuario = new Usuario(idUsuario, login, fechaCreacion);
		
		return objUsuario;
	}

}
